package br.inf.mfpo.fra4and.exemplo;

import android.content.ContentValues;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import br.inf.mfpo.fra4and.R;
import br.inf.mfpo.fra4and.activities.Fra4AndEditActivity;
import br.inf.mfpo.fra4and.exemplo.columns.PessoasColumns;
import br.inf.mfpo.fra4and.utils.AdatperUtils;

public class PessoasEditActivity extends Fra4AndEditActivity {
	EditText nome;
	Spinner sexo;

	String nomeOr;
	long sexoOr;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.example_pessoas_edit);

		nome = (EditText) findViewById(R.id.editText1);
		sexo = (Spinner) findViewById(R.id.spinner1);

		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.genero, android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		sexo.setAdapter(adapter);

		setBtnSave(R.id.button1);
		setBtnCancel(R.id.button2);

		setCreateMessage(R.string.criei);
		setUpdateMessage(R.string.alterei);
	}

	@Override
	protected void clear() {
		nome.setText("");
		sexo.setSelection(Spinner.INVALID_POSITION);
	}

	@Override
	protected ContentValues getContentValues() {
		ContentValues values = new ContentValues();
		values.put(PessoasColumns.NOME, nome.getText().toString());
		values.put(PessoasColumns.SEXO, sexo.getSelectedItemId());
		return values;
	}

	@Override
	protected ContentValues getInitialValues() {
		ContentValues values = new ContentValues();
		values.put(PessoasColumns.NOME, "");
		values.put(PessoasColumns.SEXO, 0);
		return values;
	}

	@Override
	protected ContentValues getRestoredValues() {
		ContentValues values = new ContentValues();
		values.put(PessoasColumns.NOME, nomeOr);
		values.put(PessoasColumns.SEXO, sexoOr);
		return values;
	}

	@Override
	protected void populateFields(Cursor cursor) {
		nome.setText(cursor.getString(1));
		sexo.setSelection(AdatperUtils.getPositionById(sexo.getAdapter(), cursor.getLong(2)));
	}

	@Override
	protected boolean validateFields() {
		if (nome.getText().toString().length() == 0) {
			nome.setError(getString(R.string.requerido));
			return false;
		}
		return true;
	}

	@Override
	protected void keepState() {
		if (nomeOr == null) {
			nomeOr = nome.getText().toString();
		}

		if (sexoOr == Spinner.INVALID_POSITION) {
			sexoOr = sexo.getSelectedItemId();
		}
	}

	@Override
	protected int getInsertTitle() {
		return R.string.inserir;
	}

	@Override
	protected int getEditTitle() {
		return R.string.editar;
	}

	@Override
	protected String[] getProjection() {
		return new String[] { PessoasColumns._ID, PessoasColumns.NOME, PessoasColumns.SEXO };
	}

	@Override
	protected void restoreState(Bundle savedInstanceState) {
		if (savedInstanceState != null) {
			nomeOr = savedInstanceState.getString(PessoasColumns.NOME);
			sexoOr = savedInstanceState.getLong(PessoasColumns.SEXO);
		}
	}

	@Override
	protected void saveState(Bundle outState) {
		if (isInsert()) {
			nomeOr = nome.getText().toString();
			sexoOr = sexo.getSelectedItemId();
		}
		
		outState.putString(PessoasColumns.NOME, nomeOr);
		outState.putLong(PessoasColumns.SEXO, sexoOr);
	}
}
